package Domein;

import Controllers.Tafel;

/**
 *
 * @author Tim
 */
public class SpelerDeelname extends Deelname {
    public Speler speler;
    /**
     *
     */
    public double startSaldo;
    /**
     *
     */
    public double huidigeSaldo;
    /**
     *
     */
    public boolean aanDeBeurt = true;
    public boolean kaartenZichtbaar = false;

    /**
     *
     * @param sr
     * @param p
     * @param ss
     */
    public SpelerDeelname(Spelronde sr,Speler p,double ss){
        super(sr);
        speler = p;
        startSaldo = ss;
        try { speler.setSaldo("" + (speler.getSaldo() - startSaldo));} catch (Exception e) {}
        huidigeSaldo = startSaldo;
    }

    /**
     *
     * @return
     */
    public String getGebruikersnaam(){
        return speler.getGebruikersnaam();
    }

    /**
     * 
     * @return
     */
    public boolean getAanDeBeurt() {
        return aanDeBeurt;
    }

    public void kaartenZichtbaar() {
        kaartenZichtbaar = true;
    }

    public void kaartenOnzichtbaar() {
        kaartenZichtbaar = false;
    }

    /**
     *
     * @param aanDeBeurt
     */
    public void changeAanDeBeurt(boolean aanDeBeurt) {
        this.aanDeBeurt = aanDeBeurt;
    }

    // bepaalt het verloop van het spel
    /**
     *
     * @param tafel
     */
    public void aanDeBeurt(Tafel tafel){
        if( this.handen.get(0).getTotaalwaarde() == 21){
            this.handen.get(0).setActive(false);
        }
        if(handen.get(0).inzet == 0){
            tafel.gt.inzetButton.setEnabled(true);
            tafel.gt.inzetText.setEnabled(true);
        }
        else{
            if(this.handen.get(0).activeHand && kaartenZichtbaar){
                tafel.gt.kaartButton.setEnabled(true);
                tafel.gt.pasButton.setEnabled(true);

                if(spelronde.deelname.get(0).handen.get(0).kaarten.get(0).getValue() == 1 && spelronde.deelname.get(0).handen.get(0).kaarten.size() == 2){
                    tafel.gt.verzekerenButton.setEnabled(true);
                }
                if(this.handen.get(0).kaarten.get(0).getValue()==this.handen.get(0).kaarten.get(1).getValue()){
                    tafel.gt.splitButton.setEnabled(true);
                }
                if((this.handen.get(0).getTotaalwaarde() == 9 || this.handen.get(0).getTotaalwaarde() == 10 ||this.handen.get(0).getTotaalwaarde() == 11) && this.handen.get(0).getKaarten().length()==2){
                    tafel.gt.doubleButton.setEnabled(true);
                }
            }
        }
    }

    /**
     *
     */
    public void getRatio(){
        for(Hand h:handen){
            h.getRation();
        }
    }

    /**
     *
     * @param ingezet
     * @throws java.lang.Exception
     */
    public void inzetten(double ingezet) throws Exception{

        if((huidigeSaldo - ingezet) >= 0){
            handen.get(0).setInzet(ingezet);
            speler.saldo -= ingezet;
            huidigeSaldo -= ingezet;
        }
        else{
            throw new Exception("Het huidige saldo is niet toereikend.");
        }
    }

    /**
     *
     * @param betaling
     */
    public void uitbetalen(double betaling){
        huidigeSaldo += betaling;       
        speler.saldo += betaling;
        speler.gewonnen = true;
        this.handen.get(0).gewonnen = true;
    }
}
